1 'Kukulcan 2017
10 OPENOUT "D":MEMORY &4F6B:CLOSEOUT:LOAD"!legacy.dat":CALL &8100:zic=1:|ZICON,0:GOSUB 1410
20 CALL &BB03:RANDOMIZE TIME*1.001:ch=1:nv=7:GOSUB 2150:ns=0:GOSUB 2160
30 nf=0:GOSUB 3230:GOSUB 3240:|BTNOFF:GOSUB 3560:|MENU:FOR i=&80A4 TO &80AF:POKE i,0:NEXT:|ICONES:GOSUB 210:|T8,38,&DA50:|T8,42,&DA58:|T8,38,&DAF0:|T8,42,&DB04:GOSUB 3250:|AFFFLIP,f:GOSUB 200
40 IF (INKEY(0)=0 OR JOY(0)=1) THEN chold=ch:ch=ch-1:GOSUB 160
50 IF (INKEY(2)=0 OR JOY(0)=2) THEN chold=ch:ch=ch+1:GOSUB 160
60 IF ((INKEY(8)=0 OR JOY(0)=4) AND ch=2) THEN n=n-1:GOSUB 3250
70 IF ((INKEY(1)=0 OR JOY(0)=8) AND ch=2) THEN n=n+1:GOSUB 3250
80 IF ((INKEY(8)=0 OR JOY(0)=4) AND ch=3) THEN f=f-1:GOTO 120
90 IF ((INKEY(1)=0 OR JOY(0)=8) AND ch=3) THEN f=f+1:GOTO 120
100 IF (INKEY(47)=0 OR JOY(0)=16) THEN ON ch GOTO 250,40,40,220,230,240
110 GOSUB 2170:GOTO 40
120 IF f>5 THEN f=1
130 IF f<1 THEN f=5
140 |AFFFLIP,f
150 IF (INKEY(47)=-1 AND INKEY(8)=-1 AND INKEY(1)=-1 AND JOY(0)=0) THEN GOTO 40 ELSE GOTO 150
160 IF ch<1 THEN ch=6
170 IF ch>6 THEN ch=1
180 |T16,59,l(1+chold,0)+10:GOSUB 200
190 IF (INKEY(0)=-1 AND INKEY(2)=-1 AND JOY(0)=0) THEN RETURN ELSE 190
200 |SPR,16,l(1+ch,0)+10:RETURN
210 |SPR,12,l(1,0)+19:|SPR,11,l(1,0)+23:|SPR,12,l(1,0)+27:|SPR,11,l(1,0)+31:|SPR,12,l(1,0)+35:|SPR,11,l(1,0)+39:|SPR,12,l(1,0)+43:RETURN
220 |INFOS:|T16,88,&F193+57:CALL &BB03:CALL &BB06:GOTO 20
230 |CONTROLES:|SPR,15,&F0A4:|T16,118,&F194:CALL &BB03:CALL &BB06:GOTO 20
240 |CREDITS:|SPR,0,&F146:|SPR,1,&F506:|SPR,16,&F46A:CALL &BB03:CALL &BB06:GOTO 20
250 'lvl
260 |BTNOFF:c=n\  10:d=n-(c*10):|T8,48+c,&DA77:|T8,48+d,&DA79:GOSUB 3450:fuel=PEEK(&4F6B+n):GOSUB 2140:GOSUB 1030
270 'DepotOpt
280 x=7:y=4:|SPR,15,l(y,0)+(x*4)
290 nx=0:ny=0:IF (INKEY(8)=0 OR JOY(0)=4) THEN nx=-1
300 IF (INKEY(1)=0 OR JOY(0)=8) THEN nx=1
310 IF (INKEY(0)=0 OR JOY(0)=1) THEN ny=-1
320 IF (INKEY(2)=0 OR JOY(0)=2) THEN ny=1
330 IF JOY(0)=9 THEN ny=-1:nx=1
340 IF JOY(0)=10 THEN ny=1:nx=1
350 IF JOY(0)=6 THEN ny=1:nx=-1
360 IF JOY(0)=5 THEN ny=-1:nx=-1
370 IF nx<>0 OR ny<>0 THEN GOTO 1350
380 IF (INKEY(47)=0 OR JOY(0)=16) THEN 1300
390 IF (INKEY(63)=0 OR JOY(0)=36) THEN GOSUB 1170:IF o2=0 THEN GOSUB 3560:j=12:o2=0:GOSUB 1180
400 IF (INKEY(62)=0 OR JOY(0)=40) THEN GOSUB 1130:IF o2=0 THEN GOSUB 3560:j=1:o2=0:GOSUB 1140
410 IF (INKEY(18)=0 OR INKEY(6)=0 OR JOY(0)=33) THEN |BTNON:GOTO 460
420 IF (INKEY(8)=128) THEN 3310
430 IF (INKEY(1)=128) THEN 3320
440 IF (INKEY(35)=0 OR JOY(0)=34) THEN GOTO 3330
450 GOSUB 2480:GOSUB 2170:GOTO 290
460 'Jeu
470 GOSUB 2470:j=co(x,y):IF j<>0 THEN c=ti+j ELSE c=i
480 |T16,c,l(y,0)+(x*4):IF x=cx AND y=cy THEN c=dx:d=dy:GOSUB 1210:GOSUB 2400
490 'CurrentCase
500 GOSUB 2480:fuel=fuel-1:GOSUB 2140:IF fuel=0 THEN GOSUB 2290:GOSUB 2440:|T16,c,a1:a$="  FUEL EMPTY  ":GOSUB 2510:GOTO 2320
510 GOSUB 2460
520 IF (t>=87 AND t<=89) THEN 2350
530 IF (t>=102 AND t<=104) THEN 2210
540 IF (t=111) THEN GOSUB 1520:dy=-1:dx=0
550 IF (t=112) THEN GOSUB 1630:dy=0:dx=1
560 IF (t=113) THEN GOSUB 1740:dy=1:dx=0
570 IF (t=114) THEN GOSUB 1850:dy=0:dx=-1
580 IF (t=115) THEN 1970
590 'OptionDrop?
600 i=co(cx,cy)
610 IF i=1 THEN t=ti+i:GOSUB 1520:dy=-1:dx=0
620 IF i=2 THEN t=ti+i:GOSUB 1570:dy=-1:dx=1
630 IF i=3 THEN t=ti+i:GOSUB 1630:dy=0:dx=1
640 IF i=4 THEN t=ti+i:GOSUB 1690:dy=1:dx=1
650 IF i=5 THEN t=ti+i:GOSUB 1740:dy=1:dx=0
660 IF i=6 THEN t=ti+i:GOSUB 1790:dy=1:dx=-1
670 IF i=7 THEN t=ti+i:GOSUB 1850:dy=0:dx=-1
680 IF i=8 THEN t=ti+i:GOSUB 1920:dy=-1:dx=-1
690 IF i=9 THEN t=ti+i:GOSUB 2000
700 IF i=10 THEN t=ti+i:GOTO 2040
710 IF i=11 THEN t=ti+i:GOTO 2060
720 IF i=12 THEN t=ti+i:GOSUB 2090
730 'NextCase
740 GOSUB 2480:GOSUB 2460:nx=cx+dx:ny=cy+dy:IF nx<0 OR nx>15 OR ny<0 OR ny>9 THEN GOSUB 2290:GOSUB 2440:|T16,c,a1:GOTO 2320
750 IF t=105 OR (t>=90 AND t<=101) OR (t>=106 AND t<=109) OR t=116 OR t=117 THEN GOSUB 2290:GOSUB 2440:|T16,c,a1:GOTO 2320
760 c=dx:d=dy:GOSUB 1210:ds=s
770 'Pas1
780 IF (ds=6 OR ds=2) THEN a1=l(cy,0)+(cx*4)+dx
790 IF ds=0 THEN a1=l(ny,3)+(cx*4)
800 IF ds=4 THEN a1=l(cy,1)+(cx*4)
810 IF (ds=1 OR ds=7) THEN a1=l(ny,3)+(nx*4)+(dx*-3)
820 IF (ds=3 OR ds=5) THEN a1=l(cy,1)+(cx*4)+dx
830 GOSUB 1490:|SAV,1,a1:GOSUB 1510
840 'Pas2
850 a3=a1:IF (ds=6 OR ds=2) THEN a1=l(cy,0)+(cx*4)+(dx*2)
860 IF ds=0 THEN a1=l(ny,2)+(cx*4)
870 IF ds=4 THEN a1=l(cy,2)+(cx*4)
880 IF (ds=1 OR ds=7) THEN a1=l(ny,2)+(nx*4)+(dx*-2)
890 IF (ds=3 OR ds=5) THEN a1=l(cy,2)+(cx*4)+(dx*2)
900 |AFF,1,a3:|SAV,1,a1:GOSUB 1510
910 'Pas3
920 a3=a1:IF (ds=6 OR ds=2) THEN a1=l(cy,0)+(cx*4)+(dx*3)
930 IF ds=0 THEN a1=l(ny,1)+(cx*4)
940 IF ds=4 THEN a1=l(cy,3)+(cx*4)
950 IF (ds=1 OR ds=7) THEN a1=l(ny,1)+(nx*4)+(dx*-1)
960 IF (ds=3 OR ds=5) THEN a1=l(cy,3)+(cx*4)+(dx*3)
970 |AFF,1,a3:|SAV,1,a1:GOSUB 1510
980 'Pas4
990 a3=a1:cx=nx:cy=ny:a1=l(cy,0)+(cx*4):|AFF,1,a3:GOSUB 1510
1000 IF ns>0 THEN ns=ns-1:GOSUB 2160
1010 GOTO 2810
1020 'Routines
1030 |TMPLVL,n
1040 IF f>4 THEN |LVLFLIP,INT((RND*4)+1) ELSE |LVLFLIP,f
1050 |LVLAFF:FOR x=0 TO 15:FOR y=0 TO 9:co(x,y)=0:NEXT y,x:FOR i=1 TO 12:o(i)=PEEK(o3+i):NEXT:cx=PEEK(o3-3):cy=PEEK(o3-2):dx=PEEK(o3-1):IF dx=2 THEN dx=-1
1060 dy=PEEK(o3):IF dy=2 THEN dy=-1
1070 c=dx:d=dy:GOSUB 1210:GOSUB 2400:GOSUB 1120:RETURN
1080 'opt-1ereNonVide
1090 FOR i=1 TO 12:IF o(i)>0 THEN o1=i:i=99
1100 NEXT
1110 PLOT 4+(i*40),60,c:DRAW 24+(i*40),60,c:PLOT 4+(i*40),58,c:DRAW 24+(i*40),58,c:RETURN
1120 GOSUB 3560:GOSUB 1080:i=o1:c=7:GOSUB 1110:RETURN
1130 j=o1:o2=0:j=j+1:IF j>12 THEN RETURN
1140 FOR i=j TO 12:IF o(i)>0 THEN o2=i:i=99
1150 NEXT:IF o2>0 THEN c=9:i=o1:GOSUB 1110:c=7:o1=o2:i=o1:GOSUB 1110
1160 IF (INKEY(62)=-1 AND JOY(0)<=32) THEN RETURN ELSE 1160
1170 j=o1:o2=0:j=j-1:IF j<1 THEN RETURN
1180 FOR i=j TO 1 STEP-1:IF o(i)>0 THEN o2=i:i=0
1190 NEXT:IF o2>0 THEN c=9:i=o1:GOSUB 1110:c=7:o1=o2:i=o1:GOSUB 1110
1200 IF (INKEY(63)=-1 AND JOY(0)<=32) THEN RETURN ELSE 1200
1210 IF c<0 THEN c=2
1220 IF d<0 THEN d=2
1230 s=cs(c,d):RETURN
1240 o(j)=o(j)+1:co(x,y)=0:POKE (o3+j),o(j):GOSUB 2470:|T16,i,l(y,0)+(x*4):GOSUB 3500:|ICONES:IF o(o1)=0 THEN c=9:i=o1:GOSUB 1110:o1=j
1250 c=7:i=o1:GOSUB 1110:GOSUB 1390:RETURN
1260 o(o1)=o(o1)-1:co(x,y)=o1:POKE (o3+o1),o(o1):|T16,ti+o1,l(y,0)+(x*4):GOSUB 3500:|ICONES:IF o(o1)=0 THEN GOSUB 1130
1270 IF o(o1)=0 AND o2=0 THEN GOSUB 1170
1280 IF o(o1)=0 AND o2=0 THEN c=9:i=o1:GOSUB 1110
1290 GOSUB 1390:RETURN
1300 IF (x=cx AND y=cy) THEN GOTO 290
1310 j=co(x,y):IF j>0 THEN GOSUB 1240:GOTO 290
1320 GOSUB 2470:IF (i>=87 AND i<=109) OR (i>=111 AND i<=117) THEN GOTO 290
1330 IF o(o1)>0 THEN GOSUB 1260
1340 GOTO 290
1350 IF x+nx<0 OR x+nx>15 OR y+ny<0 OR y+ny>9 THEN 290
1360 GOSUB 2470:j=co(x,y):IF j<>0 THEN c=ti+j ELSE c=i
1370 |T16,c,l(y,0)+(x*4):IF x=cx AND y=cy THEN c=dx:d=dy:GOSUB 1210:GOSUB 2400
1380 x=x+nx:y=y+ny:GOSUB 3500:GOSUB 2120:GOSUB 2120:GOTO 290
1390 IF INKEY(47)<>-1 OR JOY(0)<>0 THEN 1390
1400 RETURN
1410 'Var
1420 DEFINT c-d,f,i-j,n-p,s,t,x-y:DIM l(10,4):FOR x=0 TO 9:a1=&E002:i=0:GOSUB 1470:a1=&C052:i=1:GOSUB 1470:NEXT
1430 DIM co(16,10):DIM o(12):mlvl=&8000:o3=mlvl+&A4-1:ti=118-1:n=1:f=1
1440 DIM cs(2,2):RESTORE 1450:FOR i=0 TO 7:READ x,y,s:cs(x,y)=s:NEXT:DIM nff(20):GOSUB 3230
1450 DATA 0,2,0,1,2,1,1,0,2,1,1,3,0,1,4,2,1,5,2,0,6,2,2,7
1460 RETURN
1470 l(x,i)=a1+(x*&A0):l(x,2+(i*1))=l(x,i)+&50:RETURN
1480 'Opt
1490 i=co(cx,cy):IF i>0 THEN |T16,ti+i,l(cy,0)+(cx*4):RETURN
1500 |T16,t,l(cy,0)+(cx*4):RETURN
1510 |SPR,s,a1:RETURN
1520 's0
1530 GOSUB 2130:IF s=0 THEN RETURN
1540 IF s<=4 THEN FOR s=j TO 0 STEP-1:GOSUB 2100:NEXT:RETURN
1550 IF s>4 THEN FOR s=j TO 7:GOSUB 2100:NEXT:s=0:GOSUB 2100
1560 RETURN
1570 's1
1580 GOSUB 2130:IF s=1 THEN RETURN
1590 IF s=0 THEN s=1:GOSUB 2100:RETURN
1600 IF (s>=1 AND s<=5) THEN FOR s=j TO 1 STEP-1:GOSUB 2100:NEXT:RETURN
1610 IF s>5 THEN FOR s=j TO 7:GOSUB 2100:NEXT:FOR s=0 TO 1:GOSUB 2100:NEXT
1620 RETURN
1630 's2
1640 GOSUB 2130:IF s=2 THEN RETURN
1650 IF (s>2 AND s<=6) THEN FOR s=j TO 2 STEP-1:GOSUB 2100:NEXT:RETURN
1660 IF s=7 THEN FOR s=0 TO 2:GOSUB 2100:NEXT:RETURN
1670 IF (s>=0 AND s<2) THEN FOR s=j TO 2:GOSUB 2100:NEXT
1680 RETURN
1690 's3
1700 GOSUB 2130:IF s=3 THEN RETURN
1710 IF s>3 THEN FOR s=j TO 3 STEP-1:GOSUB 2100:NEXT:RETURN
1720 IF s<=3 THEN FOR s=j TO 3:GOSUB 2100:NEXT
1730 RETURN
1740 's4
1750 GOSUB 2130:IF s=4 THEN RETURN
1760 IF (s>=0 AND s<4) THEN FOR s=j TO 4:GOSUB 2100:NEXT:RETURN
1770 IF (s>4 AND s<=7) THEN FOR s=j TO 4 STEP-1:GOSUB 2100:NEXT
1780 RETURN
1790 's5
1800 GOSUB 2130:IF s=5 THEN RETURN
1810 IF (s>=1 AND s<=5) THEN FOR s=j TO 5:GOSUB 2100:NEXT:RETURN
1820 IF s>5 THEN FOR s=j TO 5 STEP-1:GOSUB 2100:NEXT:RETURN
1830 IF s=0 THEN FOR s=7 TO 5 STEP-1:GOSUB 2100:NEXT
1840 RETURN
1850 's6
1860 GOSUB 2130:IF s=6 THEN RETURN
1870 IF (s>=2 AND s<6) THEN FOR s=j TO 6:GOSUB 2100:NEXT:RETURN
1880 IF s=7 THEN s=6:GOSUB 2100:RETURN
1890 IF s=0 THEN FOR s=7 TO 6 STEP-1:GOSUB 2100:NEXT:RETURN
1900 IF s=1 THEN FOR s=1 TO 0 STEP-1:GOSUB 2100:NEXT:FOR s=7 TO 6 STEP-1:GOSUB 2100:NEXT
1910 RETURN
1920 's7
1930 GOSUB 2130:IF s=7 THEN RETURN
1940 IF s>=3 THEN FOR s=j TO 7:GOSUB 2100:NEXT:RETURN
1950 IF s<3 THEN FOR s=j TO 0 STEP-1:GOSUB 2100:NEXT:s=7:GOSUB 2100
1960 RETURN
1970 'T-t115
1980 tel=0:a1=l(cy,0)+(cx*4):|T16,115,a1:FOR tx=0 TO 15:FOR ty=0 TO 9:IF co(tx,ty)=9 OR (PEEK(mlvl+tx+(ty*16))=115 AND (tx<>cx OR ty<>cy)) THEN GOSUB 2030
1990 NEXT ty,tx:GOSUB 2400:GOTO 2810
2000 'T-o9
2010 tel=0:a1=l(cy,0)+(cx*4):|T16,t,a1:FOR tx=0 TO 15:FOR ty=0 TO 9:IF PEEK(mlvl+tx+(ty*16))=115 OR (co(tx,ty)=9 AND (tx<>cx OR ty<>cy)) THEN GOSUB 2030
2020 NEXT ty,tx:GOSUB 2400:GOSUB 2460:GOTO 2810
2030 tel=1:cx=tx:cy=ty:tx=16:ty=10:RETURN
2040 'Tir1-o10
2050 GOSUB 2530:GOTO 730
2060 'Tir4-o11
2070 GOSUB 2530:GOSUB 2650:GOSUB 2530:GOSUB 2650:GOSUB 2530:GOSUB 2650:GOSUB 2530:GOSUB 2650:GOTO 730
2080 'Shield-o12
2090 ns=5:GOSUB 2160:RETURN
2100 GOSUB 2120:|T16,t,a1:CALL &BD19:|SPR,s,a1:RETURN
2110 GOSUB 2120:|T16,128,a1:CALL &BD19:|SPR,s,a1:RETURN
2120 CALL &BD19:CALL &BD19:CALL &BD19:RETURN
2130 c=dx:d=dy:GOSUB 1210:a1=l(cy,0)+(cx*4):j=s:RETURN
2140 cf=fuel\ 10:df=fuel-(cf*10):|T8,48+cf,&EC57:|T8,48+df,&EC59:RETURN
2150 |T8,48+nv,&E368:RETURN
2160 |T8,48+ns,&F548:RETURN
2170 IF (INKEY(29)=0 OR INKEY(38)=0) THEN GOSUB 2190 ELSE RETURN
2180 IF (INKEY(29)=-1 AND INKEY(38)=-1) THEN RETURN ELSE 2180
2190 IF zic=1 THEN |ZICOFF:zic=0 ELSE zic=1:|ZICON,0
2200 RETURN
2210 'Mine
2220 GOSUB 2290:tcx=cx:tcy=cy:GOSUB 2240
2230 IF ns=0 THEN GOTO 2320 ELSE |SPR,s,a1:GOTO 460
2240 IF t=102 THEN te=24:GOSUB 2280
2250 IF t=103 THEN te=33:GOSUB 2280
2260 IF t=104 THEN te=73:GOSUB 2280
2270 RETURN
2280 |T16,te,a1:POKE(mlvl+tcx+(tcy*16)),te:RETURN
2290 a1=l(cy,0)+(cx*4):GOSUB 2310:RETURN
2300 a1=l(tcy,0)+(tcx*4):GOSUB 2310:RETURN
2310 |SAV,1,a1:FOR i=8 TO 10:|SPR,i,a1:FOR j=1 TO 5:CALL &BD19:NEXT:|AFF,1,a1:NEXT:RETURN
2320 'Dead
2330 nv=nv-1:IF nv>0 THEN GOSUB 2150:a$="SHIP DESTROYED":GOSUB 2510:GOTO 250
2340 nv=0:GOSUB 2150:a$=" MISSION OVER ":GOSUB 2510:GOTO 20
2350 'Win
2360 IF nff(n)=0 THEN nf=nf+1:nff(n)=1:GOSUB 3240
2370 n=n+1:IF n=21 THEN n=1
2380 |T8,64,&DA7B:a$="FLAG  CAPTURED":GOSUB 2510:IF nf=20 THEN GOSUB 3530:|T8,32,&DA7B:GOTO 20
2390 a$=" NEXT MISSION":GOSUB 2510:GOTO 250
2400 |SPR,s,l(cy,0)+(cx*4):RETURN
2410 FOR i=4 TO 11:|T16,59,l(4,0)+(i*4):|T16,59,l(5,0)+(i*4):NEXT:RETURN
2420 FOR i=1 TO LEN(a$):CALL &BD19:CALL &BD19:|T8,ASC(MID$(a$,i,1)),l(4,3)+(i*2)+16:NEXT:CALL &BB03:GOSUB 2430:RETURN
2430 FOR i=0 TO 75:CALL &BD19:NEXT:RETURN
2440 i=PEEK(mlvl+cx+(cy*16)):j=co(cx,cy):IF j<>0 THEN c=ti+j ELSE c=i
2450 RETURN
2460 t=PEEK(mlvl+cx+(cy*16)):RETURN
2470 i=PEEK(mlvl+x+(y*16)):RETURN
2480 IF (INKEY(50)=0) THEN 3290
2490 IF (INKEY(67)=0 OR INKEY(69)=0) THEN 3300
2500 RETURN
2510 GOSUB 2410:GOSUB 2420:RETURN
2520 'Tir
2530 tcx=cx+dx:tcy=cy+dy
2540 j=0:WHILE j=0
2550 IF tcx<0 OR tcx>15 OR tcy<0 OR tcy>9 THEN RETURN
2560 a1=l(tcy,0)+(tcx*4):|SAV,1,a1:|SPR,16,a1
2570 t=PEEK(mlvl+tcx+(tcy*16)):CALL &BD19:CALL &BD19:|AFF,1,a1
2580 IF (t>=102 AND t<=104) THEN GOSUB 2300:GOSUB 2240:RETURN
2590 IF (t>=106 AND t<=109) THEN GOSUB 2300:te=110:GOSUB 2280:RETURN
2600 IF (t>=90 AND t<=93) THEN GOSUB 2300:te=24:GOSUB 2280:RETURN
2610 IF (t>=94 AND t<=97) THEN GOSUB 2300:te=33:GOSUB 2280:RETURN
2620 IF (t>=98 AND t<=101) THEN GOSUB 2300:te=73:GOSUB 2280:RETURN
2630 IF (t=105) THEN GOSUB 2300:RETURN
2640 tcx=tcx+dx:tcy=tcy+dy:WEND:RETURN
2650 'rotate+2
2660 GOSUB 2130
2670 IF s<6 THEN s=s+1:GOSUB 2110:s=s+1:GOSUB 2110:GOSUB 2710:RETURN
2680 IF s=6 THEN s=7:GOSUB 2110:s=0:GOSUB 2110:GOSUB 2710:RETURN
2690 IF s=7 THEN s=0:GOSUB 2110:s=1:GOSUB 2110:GOSUB 2710:RETURN
2700 RETURN
2710 's->dx,dy
2720 IF s=0 THEN dx=0:dy=-1
2730 IF s=1 THEN dx=1:dy=-1
2740 IF s=2 THEN dx=1:dy=0
2750 IF s=3 THEN dx=1:dy=1
2760 IF s=4 THEN dx=0:dy=1
2770 IF s=5 THEN dx=-1:dy=1
2780 IF s=6 THEN dx=-1:dy=0
2790 IF s=7 THEN dx=-1:dy=-1
2800 RETURN
2810 'TirEnnemi
2820 a1=mlvl+cx+(cy*16):a2=l(cy,0)+(cx*4)
2830 '1c
2840 IF cx+1<=15 THEN t=PEEK(a1+1):IF t=90 OR t=94 OR t=98 OR t=106 THEN GOSUB 3040:|SPR,11,a2:GOSUB 3220:GOSUB 3050:|SPR,12,a2:GOSUB 3220:GOSUB 3050:GOTO 3010
2850 IF cx-1>=0 THEN t=PEEK(a1-1):IF t=91 OR t=95 OR t=99 OR t=107 THEN GOSUB 3040:|SPR,11,a2:GOSUB 3220:GOSUB 3050:|SPR,12,a2:GOSUB 3220:GOSUB 3050:GOTO 3010
2860 IF cy+1<=9 THEN t=PEEK(a1+16):IF t=92 OR t=96 OR t=100 OR t=108 THEN GOSUB 3040:|SPR,13,a2:GOSUB 3220:GOSUB 3050:|SPR,14,a2:GOSUB 3220:GOSUB 3050:GOTO 3010
2870 IF cy-1>=0 THEN t=PEEK(a1-16):IF t=93 OR t=97 OR t=101 OR t=109 THEN GOSUB 3040:|SPR,13,a2:GOSUB 3220:GOSUB 3050:|SPR,14,a2:GOSUB 3220:GOSUB 3050:GOTO 3010
2880 '2c
2890 IF cx+2<=15 THEN t=PEEK(a1+2):IF t=106 THEN GOSUB 3060:|SPR,11,a2:|SPR,12,a2+4:GOSUB 3220:GOSUB 3070:|SPR,12,a2:|SPR,11,a2+4:GOSUB 3220:GOSUB 3070:GOTO 3010
2900 IF cx-2>=0 THEN t=PEEK(a1-2):IF t=107 THEN GOSUB 3080:|SPR,11,a2:|SPR,12,a2-4:GOSUB 3220:GOSUB 3090:|SPR,12,a2:|SPR,11,a2-4:GOSUB 3220:GOSUB 3090:GOTO 3010
2910 IF cy+2<=9 THEN t=PEEK(a1+32):IF t=108 THEN GOSUB 3100:|SPR,13,a2:|SPR,14,a2+&A0:GOSUB 3220:GOSUB 3110:|SPR,14,a2:|SPR,13,a2+&A0:GOSUB 3220:GOSUB 3110:GOTO 3010
2920 IF cy-2>=0 THEN t=PEEK(a1-32):IF t=109 THEN GOSUB 3120:|SPR,13,a2:|SPR,14,a2-&A0:GOSUB 3220:GOSUB 3130:|SPR,14,a2:|SPR,13,a2-&A0:GOSUB 3220:GOSUB 3130:GOTO 3010
2930 '3c
2940 IF cx+3<=15 THEN t=PEEK(a1+3):IF t=106 THEN GOSUB 3140:|SPR,11,a2:|SPR,12,a2+4:|SPR,11,a2+8:GOSUB 3220:GOSUB 3150:|SPR,12,a2:|SPR,11,a2+4:|SPR,12,a2+8:GOSUB 3220:GOSUB 3150:GOTO 3010
2950 IF cx-3>=0 THEN t=PEEK(a1-3):IF t=107 THEN GOSUB 3160:|SPR,11,a2:|SPR,12,a2-4:|SPR,11,a2-8:GOSUB 3220:GOSUB 3170:|SPR,12,a2:|SPR,11,a2-4:|SPR,12,a2-8:GOSUB 3220:GOSUB 3170:GOTO 3010
2960 IF cy+3<=9 THEN t=PEEK(a1+48):IF t=108 THEN GOSUB 3180:|SPR,13,a2:|SPR,14,a2+&A0:|SPR,13,a2+&140:GOSUB 3220:GOSUB 3190:|SPR,14,a2:|SPR,13,a2+&A0:|SPR,14,a2+&140:GOSUB 3220:GOSUB 3190:GOTO 3010
2970 IF cy-3>=0 THEN t=PEEK(a1-48):IF t=109 THEN GOSUB 3200:|SPR,13,a2:|SPR,14,a2-&A0:|SPR,13,a2-&140:GOSUB 3220:GOSUB 3210:|SPR,14,a2:|SPR,13,a2-&A0:|SPR,14,a2-&140:GOSUB 3220:GOSUB 3210:GOTO 3010
2980 'rien
2990 IF tel=1 THEN tel=0:GOTO 730
3000 GOTO 490
3010 'EclairToShip
3020 IF ns=0 THEN FOR i=8 TO 10:|SPR,i,a2:FOR j=1 TO 5:CALL &BD19:NEXT:|AFF,1,a2:NEXT:|T16,PEEK(a1),a2:GOTO 2320
3030 GOTO 490
3040 |SAV,1,a2:RETURN
3050 |AFF,1,a2:RETURN
3060 GOSUB 3040:|SAV,2,a2+4:RETURN
3070 GOSUB 3050:|AFF,2,a2+4:RETURN
3080 GOSUB 3040:|SAV,2,a2-4:RETURN
3090 GOSUB 3050:|AFF,2,a2-4:RETURN
3100 GOSUB 3040:|SAV,2,a2+&A0:RETURN
3110 GOSUB 3050:|AFF,2,a2+&A0:RETURN
3120 GOSUB 3040:|SAV,2,a2-&A0:RETURN
3130 GOSUB 3050:|AFF,2,a2-&A0:RETURN
3140 GOSUB 3060:|SAV,3,a2+8:RETURN
3150 GOSUB 3070:|AFF,3,a2+8:RETURN
3160 GOSUB 3080:|SAV,3,a2-8:RETURN
3170 GOSUB 3090:|AFF,3,a2-8:RETURN
3180 GOSUB 3100:|SAV,3,a2+&140:RETURN
3190 GOSUB 3110:|AFF,3,a2+&140:RETURN
3200 GOSUB 3120:|SAV,3,a2-&140:RETURN
3210 GOSUB 3130:|AFF,3,a2-&140:RETURN
3220 FOR i=0 TO 5:CALL &BD19:NEXT:RETURN
3230 FOR i=1 TO 20:nff(i)=0:NEXT:RETURN
3240 c=nf\ 10:d=nf-(c*10):|T8,48+c,&D187:|T8,48+d,&D189:RETURN
3250 IF n<1 THEN n=20
3260 IF n>20 THEN n=1
3270 c=n\ 10:d=n-(c*10):|T8,48+c,&DA53:|T8,48+d,&DA55
3280 IF(INKEY(8)=-1 AND INKEY(1)=-1 AND JOY(0)=0) THEN RETURN ELSE 3280
3290 a$="RESTART  LEVEL":GOSUB 2510:GOTO 250
3300 a$=" GAME ABORTED ":GOSUB 2510:GOTO 20
3310 a$="PREVIOUS LEVEL":GOSUB 2510:n=n-1:IF n<1 THEN n=20:GOTO 250 ELSE GOTO 250
3320 a$="  NEXT LEVEL  ":GOSUB 2510:n=n+1:IF n>20 THEN n=1:GOTO 250 ELSE GOTO 250
3330 FOR i=0 TO 8:FOR j=2 TO 7:|T16,59,l(j,0)+16+(i*4):NEXT j,i:|SUB:|SPR,16,l(2,0)+16:ch=1
3340 IF(INKEY(0)=0 OR JOY(0)=1) THEN chold=ch:ch=ch-1:GOSUB 3380
3350 IF(INKEY(2)=0 OR JOY(0)=2) THEN chold=ch:ch=ch+1:GOSUB 3380
3360 IF(INKEY(47)=0 OR JOY(0)=16) THEN GOSUB 3470:ON ch GOTO 3440,3290,3310,3320,3430,3300
3370 GOTO 3340
3380 IF ch<1 THEN ch=6
3390 IF ch>6 THEN ch=1
3400 |T16,59,l(1+chold,0)+16:GOSUB 3420
3410 IF(INKEY(0)=-1 AND INKEY(2)=-1 AND JOY(0)=0) THEN RETURN ELSE 3410
3420 |SPR,16,l(1+ch,0)+16:RETURN
3430 IF (INKEY(47)=-1 AND JOY(0)=0) THEN GOSUB 2190:GOTO 3370 ELSE 3430
3440 GOTO 290
3450 IF nff(n)=1 THEN i=64 ELSE i=32
3460 |T8,i,&DA7B:RETURN
3470 IF ch=5 THEN RETURN
3480 FOR i=4 TO 12:j=2:GOSUB 3510:NEXT:i=12:FOR j=3 TO 7:GOSUB 3510:NEXT:FOR i=11 TO 4 STEP-1:j=7:GOSUB 3510:NEXT:i=4:FOR j=6 TO 3 STEP-1:GOSUB 3510:NEXT:FOR i=5 TO 11:j=3:GOSUB 3510:NEXT:i=11:FOR j=4 TO 6:GOSUB 3510:NEXT
3490 FOR i=10 TO 5 STEP-1:j=6:GOSUB 3510:NEXT:i=5:FOR j=5 TO 4 STEP-1:GOSUB 3510:NEXT:FOR i=6 TO 10:j=4:GOSUB 3510:NEXT:FOR i=10 TO 6 STEP-1:j=5:GOSUB 3510:NEXT:GOSUB 2400
3500 |SPR,15,l(y,0)+(x*4):RETURN
3510 c=co(i,j):IF c<>0 THEN d=ti+c ELSE d=PEEK(mlvl+i+(j*16))
3520 |T16,d,l(j,0)+(i*4):RETURN
3530 ny=-1:FOR y=0 TO 9:FOR x=0 TO 2 STEP 2:a$="":FOR dx=1 TO 4:GOSUB 3550:a$=a$+b$:NEXT:FOR i=0 TO 31:IF MID$(a$,i+1,1)="0" THEN cx=32 ELSE cx=39
3540 |T8,cx,l(y,x)+i*2:NEXT i,x,y:CALL &BB03:CALL &BB06:RETURN
3550 ny=ny+1:nx=PEEK(&4F80+ny):b$=BIN$(nx):cx=LEN(b$):b$=STRING$(8-cx,"0")+b$:RETURN
3560 FOR i=1 TO 12:c=9:GOSUB 1110:NEXT:RETURN
